package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲流写出时的缓冲区问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        String line = "和我在成都的街头走一走，哦哦哦哦~";
        bos.write(line.getBytes(StandardCharsets.UTF_8));
        /*
            缓冲输出流的flush方法会强制将缓冲流中已经缓冲的数据一次性写出

            flush方法是在接口:Flushable中定义的
            而字节输出流的超类OutputStream实现了该接口，这以为这所有字节输出流
            都具有该方法。
            但是只有缓冲流真正实现了flush应有的功能。其他的高级流flush方法的实现
            都是调用其连接的流的flush方法，将该动作传递下去。
         */
//        bos.flush();//flush:冲水

        System.out.println("写出完毕!");
        //缓冲输出流的close方法中会自动调用一次flush确保所有数据关闭前写出
        bos.close();
    }
}




